#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
////字符串逆序
// 一（10m）
//void Reverse(char arr[], int sz) {
//	int i = 0;
//	for (i = 0; i < sz  / 2; i++) {
//	//中间量
//		char temp = arr[i];
//		arr[i] = arr[sz-1 - i];
//		arr[sz -1- i] = temp;
//	}
//}
//int main() {
//	char arr[] = "abcdefgh";//8
//	int sz = sizeof(arr) / sizeof(arr[0]) - 1;//8
//	int i = 0;
//	printf("%d\n", sz);	
//	Reverse(arr,sz);
//	printf("%s\n", arr);
//	return 0;
//}
//二
//void reverse(char arr[], int sz) {
//	int right = sz - 1;
//	int left = 0;
//	while (left < right) {
//		int temp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = temp;
//		left++;
//		right--;
//	}
//}
//int main() {
//	char arr[] = "abcdefgh";
//	int sz = sizeof(arr) / sizeof(arr[0]) - 1;
//	reverse(arr,sz);
//	int i = 0;
//	printf("%s\n", arr);
//	return 0;
//}

//字符串逆序（递归实现...难想不到）
//字符串长度函数
//int My_strlen(char*str) {
//	int count = 0;
//	while (*str != '\0') {		
//		count++;
//		str++;
//	}
//	return count;
//}
//void reverse(char* str) {
//	char temp = *str;
//	int len = My_strlen(str);
//	*str = *(str + len - 1);
//	//原*(str + len - 1) = 'g';
//	*(str + len - 1) = '\0';
//	if (strlen(str + 1) >= 2) {
//		reverse(str + 1);
//	}
//	*(str + len - 1) = temp;
//}
//int main() {
//	char arr[] = "abcdefgh"; 
//	reverse(arr);
//	printf("%s\n", arr);
//	return 0;
//}

//可传参多个
//字符串长度函数
int My_strlen(char*str) {
	int count = 0;
	while (*str != '\0') {		
		count++;
		str++;
	}
	return count;
}
//逆序函数
void reverse(char arr[], int left,int right) {
	int temp = arr[left];
	arr[left] = arr[right];
	arr[right] = temp;
	if (left+ 1 < right - 1) {
		//left++;
		//right--;//都行
		reverse(arr, left+1,right-1);
	}
}
int main() {
	char arr[] = "abcdefgh"; 
	int sz = My_strlen(arr);
	int left = 0;
	int right = sz - 1;
	reverse(arr,left,right);
	printf("%s\n", arr);
	return 0;
}